import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * Created by LiuChang on 2020/2/16
 */
public class Main {

    public static void main(String[] args) throws IOException {
        Main main = new Main();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        //String next = bufferedReader.readLine();
        //String next = scanner.nextLine();
        //String[] s = next.split(" ");
        //System.out.println(main.getDayOfYear(Integer.parseInt(s[0]), Integer.parseInt(s[1]), Integer.parseInt(s[2])));

        int N = Integer.parseInt(bufferedReader.readLine());
        String[] s = bufferedReader.readLine().split(" ");
        int[] piles = new int[N];
        for (int i = 0; i < s.length; i++) {
            piles[i] = Integer.parseInt(s[i]);
        }
        int H = Integer.parseInt(bufferedReader.readLine());

        System.out.println(main.eatBanana(N, piles, H));
    }

    public int getDayOfYear(int year, int month, int day) {
        if (month > 1) {
            day = day + 31;
        }
        if (month > 2) {
            if (year % 4 == 0) {
                day = day + 29;
            } else {
                day = day + 28;
            }
        }
        if (month > 3) {
            day = day + 31;
        }
        if (month > 4) {
            day = day + 30;
        }
        if (month > 5) {
            day = day + 31;
        }
        if (month > 6) {
            day = day + 30;
        }
        if (month > 7) {
            day = day + 31;
        }
        if (month > 8) {
            day = day + 31;
        }
        if (month > 9) {
            day = day + 30;
        }
        if (month > 10) {
            day = day + 31;
        }
        if (month > 11) {
            day = day + 31;
        }

        return day;
    }


    public int eatBanana(int N, int[] piles, int H) {
        int[] eatTimes = new int[N];
        for (int i = 0; i < eatTimes.length; i++) {
            eatTimes[i] = 1;
        }

        int[] ks = new int[N];
        for (int i = 0; i < piles.length; i++) {
            int pile = piles[i];
            ks[i] = pile;
            H--;
        }
        while (H > 0) {
            //    找到最大的一堆
            int max = 0;
            int maxKey = 0;
            for (int i = 0; i < ks.length; i++) {
                int k = ks[i];
                if (k > max) {
                    max = k;
                    maxKey = i;
                }
            }
            //    最大的堆算结果
            int pile = piles[maxKey];
            int eatTime = eatTimes[maxKey] + 1;
            int maxK = (int) Math.ceil((double) pile / (double) eatTime);
            ks[maxKey] = maxK;
            eatTimes[maxKey] = eatTime;
            H--;
        }
        int max = 0;
        for (int i = 0; i < ks.length; i++) {
            int k = ks[i];
            if (k > max) {
                max = k;
            }
        }
        return max;
    }

}
